Random Notes
Simple webserver with python2
start a webserver with directory listing in the current directory:
python2 -m SimpleHTTPServer 8000
Ubuntu libgl errors
To avoid erros with bumblebee hybrid graphic on 32bit applications (e.g. steam)
do the following:
sudo vim /etc/ld.so.conf.d/optimus.conf
Add next two lines to file:
/usr/lib32
/usr/lib/i386-linux-gnu/mesa
Then execute:
sudo ldconfig
Transcode movie to HQ h264 via ffmpeg
map 0 makes sure that all audio tracks will be present in output file aswell.
without "veryslow" profile will be great quality, too.
ffmpeg -i INPUT.mkv -map 0 -vcodec libx264 -preset veryslow -acodec libmp3lame OUTPUT.mkv
h264 hardware encoding with gstreamer
The following command is used to convert any movie to a matroska(mkv) container,
with a h264 video (scaled down to 720p) and faac audio (with a bitrate of 40000).
The whole video encoding is hardware accelerated and requires a working gstreamer-vaapi backend.
The hardware must be able to do h264 encoding (newer intels, nvidia,..)
gst-launch-1.0 filesrc location="~/input.mp4" ! \
decodebin name=demux ! \
videoscale ! "video/x-raw, width=1280, height=720" ! \
vaapiencode_h264 rate-control=1 tune=high-compression cabac=true ! \
matroskamux name=mux ! \
filesink location="~/output.mkv" demux. ! \
audioconvert ! faac bitrate=40000 ! aacparse ! mux.
Get/Set time via date
get and set date via timestamp.
get:
date +%s
set:
date +%s -s "@1384261338"
boblight-X11
depends: subversion
compile
svn checkout http://boblight.googlecode.com/svn/trunk/ boblight
./configure --prefix=/usr --without-portaudio
start
boblight-X11 -o speed=42 -o value=5
Disable guest login on Ubuntu
Tested on ubuntu 12.04 and ubuntu 14.04.
edit/create /etc/lightdm/lightdm.conf:
[SeatDefaults]
user-session=ubuntu
greeter-session=unity-greeter
allow-guest=false
Support for CEC adaptors under gentoo
to enable cec support for devices such as the
pulseeigt-cec adaptor you'll need the following:
in /etc/portage/make.conf:
USE="cec"
add the user to uucp:
gpasswd -a <username> uucp
enable in kernel CDC-ACM devices:
kernel: USB Modem (CDC ACM) support (CONFIG_USB_ACM)
KDE enable samba for dolphin
In most cases, dolphin tries to download files from samba shares, instead of
streaming them / giving the path to the application (vlc, mplayer).
To tell KDE to open the files directly, put the following in the applicaions dir:
cp /usr/share/applications/mplayer.desktop /home/$USER/.local/share/applications
add the following to /home/$USER/.local/share/applications/mplayer.desktop:
X-KDE-Protocols=http,ftp,smb
works with mplayer and vlc and maybe some others too.
Add the same timestamp to all files
timestamp could be e.g 201403270000
find . | xargs touch -h -t $timestamp
Resize DD-Image to max-size
bzcat image-file.img > /dev/mmcblk0
sync
eject sdcard, insert sdcard to make sure every partition gets reloaded
fdisk /dev/mmcblk0
p
d
2
n
p
2
<return>
<return>
w
q
sync
eject sdcard, insert sdcard to make sure every partition gets reloaded
resize2fs /dev/sdb2
sync
List all modules needed by lspci
this prints all modules which are known drivers for lspci detected hardware:
LC_ALL=c lspci -mvk | grep ^Driver | awk '{print $2}' | uniq
Basic pipe-knowledge
as the "<" looks often confusing for some people:
vim - < filename
the same as:
cat filename | vim -
sed basics
replace
sed 's/alt/neu/g' filename > changed_file
sed -i 's/alt/neu/g' filename
delete
sed -i '/this will be deleted/d' filename
Disable kernel sysrq calls in userland
sysctl -w kernel.sysrq = 0
Toggle window manager decorations
A simple python2 script to toggle window decorations in windowmanagers like marco/metacity:
#!/usr/bin/python
from gtk.gdk import *
w=window_foreign_new((get_default_root_window().property_get("_NET_ACTIVE_WINDOW")[2][0]))
state = w.property_get("_NET_WM_STATE")[2]
maximized='_NET_WM_STATE_MAXIMIZED_HORZ' in state and '_NET_WM_STATE_MAXIMIZED_VERT' in state
if w.get_decorations() != 0 :
w.set_decorations(0)
else:
w.set_decorations(DECOR_ALL)
window_process_all_updates()
Xdefaults
colored manpages:
*colorIT: #BEC040
*colorBD: #728CA6
*colorUL: #73C040
show xrdb colors
Display colors of xrdb compliant terminals like urxvt and xterm
#!/bin/bash
xrdb -l ~/.Xdefaults
colors=($(xrdb -query | sed -n 's/.*color\([0-9]\)/\1/p' | sort -nu | cut -f2))
for i in {0..7}; do echo -en "\e[0m \e[$((30+$i))m \xE2\x96\x88\xE2\x96\x88 ${colors[i]} \e[0m"; done
echo
for i in {8..15}; do echo -en "\e[0m \e[1;$((22+$i))m \xE2\x96\x88\xE2\x96\x88 ${colors[i]} \e[0m"; done
echo
Screen
shelltitle "$ |terminal"
msgwait 2
vbell off
altscreen on
term screen-256color
bindkey "^[Od" prev # change window with ctrl-left
bindkey "^[Oc" next # change window with ctrl-right
hardstatus alwayslastline "%{= w}%-w%{= bw} %n %t %{-}%+w %-=%{b}%c:%s"
Archlinux AUR bash/zsh function
dependency: wget
add the following to ~/.bashrc or ~/.zshrc:
function aur {
if [ "$1" = "-Ss" ]; then
wget "https://aur.archlinux.org/packages/?O=0&K=$2&PP=250" -O /tmp/parse.html &> /dev/null
grep "\/packages\/" /tmp/parse.html | grep -v "?K=" | cut -d \> -f 3 | cut -d \< -f 1 | grep "$2" --color=always
rm /tmp/parse.html
elif [ "$1" = "-S" ]; then
mkdir ~/aur &> /dev/null || true
cd ~/aur
wget https://aur.archlinux.org/cgit/aur.git/snapshot/$2.tar.gz -N &> $2.tar.gz.log
tar -xzf $2.tar.gz
cd $2
makepkg -si
fi
}
ALX Network Driver
On some distributions the ALX network driver of my Dell XPS One 27 PC wont work.
This will install the correct driver:
wget https://www.kernel.org/pub/linux/kernel/projects/backports/2013/03/04/compat-drivers-2013-03-04-u.tar.bz2
./scripts/driver-select alx
make
su -c make install
top 10 commands
history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10
KDE Kmix Tray Scroll Step
in [Globals] in ~/.kde4/share/config/kmixrc:
VolumePercentageStep=2
MP3 remove silence
depends on package: sox
Remove silence on the beginning and the end of MP3 files:
#!/bin/bash
echo `date` > /tmp/trimp3.log
for i in *.mp3; do
echo -n "removing silence from: $i"
sox "$i" "$i".tmp.mp3 silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse &>> /tmp/trimp3.log
mv "$i".tmp.mp3 "$i"
echo " ... done"
done
Xorg Display Resolution Scaling
this will fake a FullHD resolution for a display with only 1600x900:
xrandr --output LVDS1 --mode 1600x900 --scale 1.2x1.2
Boost mdadm raid resync
Read-Ahead
set read-ahead to 4096:
blockdev --setra 4096 /dev/md127
Stripe Cache
set stripe cache to 8192
echo 8192 > /sys/block/md127/md/stripe_cache_size
Restore corrupted btrfs pacman files
On my notebook i got alot of corrupted files after powerloss.
I was on a upgrade (pacman -Syu) when the system shut off without syncing.
The result where alot of files (all new pacman installed files) with size "0".
btrfs check hasn't found any corruption and pacman thought everything is installed correctely.
This is how i solved it:
pacman -S pkgfile
pkgfile --update
pacman -S --force $(for i in $(find /usr -size 0 -type f; do pkgfile $i; done | sort | uniq)
usb issues on some arm devices
On some arm devices (pandaboard, odroid-x) i noticed some issues, with usb initialisation of my sat receiver.
Adding this to the cmdline solved the problem:
vram=16M coherent_pool=6M
udev rule for static serial interfaces
the output of this script must be copied to: /etc/udev/rules.d/.rules
echo "=== enter your data ==="; \
echo -n "tty (e.g: /dev/ttyUSB0): "; \
read tty; \
echo -n "name (e.g: beagle): "; \
read name; \
echo "=== copy the following rule to /etc/udev/rules.d/serial.rules ==="; \
idVendor=$(udevadm info -a -n $tty | grep '{idVendor}' | head -n1 | cut -d \" -f 2); \
idProduct=$(udevadm info -a -n $tty | grep '{idProduct}' | head -n1 | cut -d \" -f 2); \
idSerial=$(udevadm info -a -n $tty | grep '{serial}' | head -n1 | cut -d \" -f 2); \
echo "SUBSYSTEM==\"tty\", ATTRS{idVendor}==\"$idVendor\", ATTRS{idProduct}==\"$idProduct\", ATTRS{serial}==\"$idSerial\", SYMLINK+=\"serial_$name\""
Aircrack Cheat Sheet
start monitor
airmon-ng start wlp1s0
dump all
airodump-ng wlp1s0mon
dump specific to file
airodump-ng -c 1 --bssid 84:9C:A6:28:62:DA -w HAIR_wpa wlp1s0mon --ignore-negative-one
-c channel
--bssid router
-w filename
--ignore-negative-one Removes 'fixed channel : -1' message
deauth broadcast
aireplay-ng --deauth 100 -a 84:9C:A6:28:62:DA wlp1s0mon --ignore-negative-one
specific deauth
aireplay-ng --deauth 100 -a 84:9C:A6:28:62:DA -c AA:BB:CC:DD:EE:FF wlp1s0mon --ignore-negative-one
Android Phone Backup/Restore
adb backup
adb backup -apk -shared -all -f backup-file.adb
adb backup -apk -shared -all -f backup.ab
adb install /path/to/file/app.apk
adb restore backup-file.adb
FDroid Fetcher
function f_droid() {
curl -s https://f-droid.org/packages/$1/ | grep "package-version-download" -A 1 | head -n 2 | tail -n 1 | sed -n 's/.*href="\(.*\)".*/\1/p'
}
Install Archlinux with FullDisk Encryption
Setup the live environment
loadkeys de-latin1
wifi-menu
Setup the partitions
cfdisk /dev/sda
mkfs.ext4 /dev/sda1 -L boot
cryptsetup -c aes-xts-plain64 -y -s 512 luksFormat /dev/sdX2
cryptsetup luksOpen /dev/sda2 rootfs
mkfs.ext4 /dev/mapper/rootfs -L system
mount /dev/mapper/rootfs /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
Main installation
pacstrap /mnt base base-devel
pacstrap /mnt grub-bios
pacstrap /mnt <your software>
genfstab -p -U /mnt > /mnt/etc/fstab
System configuration
arch-chroot /mnt
vi /etc/locale.gen
de_DE.UTF-8 UTF-8
en_GB.UTF-8 UTF-8
locale-gen
echo LANG=de_DE.UTF-8 > /etc/locale.conf
export LANG=de_DE.UTF-8
vi /etc/vconsole.conf
KEYMAP="de-latin1-nodeadkeys"
FONT=Lat2-Terminus16
FONT_MAP=
ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
echo HOSTNAME > /etc/hostname
Modify the initramfs
vi /etc/mkinitcpio.conf
- Add "keymap" and "encrypt" before "filesystems" in the HOOKS
mkinitcpio -p linux
Bootloader
grub-install /dev/sda
vi /etc/default/grub
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:rootfs"
grub-mkconfig -o /boot/grub/grub.cfg
Finish the installation
passwd
exit
reboot
Install Archlinux on Multimedia PC
This describes how to install archlinux with xbmc and hardware video decoding
for an AMD APU (E-350) using the opensource radeon drivers.
Setup the live environment
loadkeys de-latin1
wifi-menu
Setup partitions
cfdisk /dev/sda
mkfs.ext4 /dev/sda1 -L system
mount /dev/sda1 /mnt
Main installation
pacstrap /mnt base base-devel
pacstrap /mnt syslinux
genfstab -p -U /mnt > /mnt/etc/fstab
arch-chroot /mnt
System configuration
vi /etc/locale.gen
de_DE.UTF-8 UTF-8
en_GB.UTF-8 UTF-8
locale-gen
echo LANG=de_DE.UTF-8 > /etc/locale.conf
export LANG=de_DE.UTF-8
vi /etc/vconsole.conf
KEYMAP="de-latin1-nodeadkeys"
FONT=Lat2-Terminus16
FONT_MAP=
ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules
echo HOSTNAME > /etc/hostname
Software installation
pacman -S xorg xorg-xinit xbmc libva-vdpau-driver wicd
systemctl enable wicd
Create and setup a new user
passwd
useradd eric -m -G users,audio,video,games,network,optical,storage,wheel
passwd eric
su -l eric -c "echo xbmc-standalone > /home/eric/.xinitrc"
Make use of the video decoding on the new OSS radeon drivers
vi /etc/profile.d/radeon.sh
export LIBVA_DRIVER_NAME=vdpau
export VDPAU_DRIVER=r600
chmod +x /etc/profile.d/radeon.sh
Bootloader
syslinux-install_update -i -a -m
vi /boot/syslinux/syslinux.cfg
PROMPT 1
TIMEOUT 50
DEFAULT arch
LABEL arch
LINUX ../vmlinuz-linux
APPEND root=/dev/sda1 rw quiet radeon.dpm=1 radeon.audio=1 clocksource=hpet hpet=enable
INITRD ../initramfs-linux.img
Finish the installation
exit
reboot
Blu-Ray
for bluray support follow those instructions: vlc-bluray.
It will make it possible to watch some of the encrypted bluray discs.
Cinnamon
Gsettings
update: since version 2.0+ cinnamon is using its own config strings,
the gnome settings from above will not work anymore
update: cinnamon 2.6.x changed the gsetting paths (keybindings updated)
show settings:
gsettings list-recursively org.cinnamon.desktop.media-handling
deactivate automount:
gsettings set org.cinnamon.desktop.media-handling automount 'false'
gsettings set org.cinnamon.desktop.media-handling automount-open 'false'
desktop font:
gsettings set org.nemo.desktop font 'Sans 8'
keyboard shortcuts:
gsettings set org.cinnamon.desktop.keybindings.media-keys screensaver "['<Super>l']"
gsettings set org.cinnamon.desktop.keybindings.media-keys terminal "['<Super>1']"
gsettings set org.cinnamon.desktop.keybindings.media-keys www "['<Super>2']"
gsettings set org.cinnamon.desktop.keybindings.media-keys home "['<Super>3']"
gsettings set org.cinnamon.desktop.keybindings.wm panel-run-dialog "['<Super>0']"
gsettings set org.cinnamon.desktop.keybindings.wm minimize "['<Alt>s']"
gsettings set org.cinnamon.desktop.keybindings.wm close "['<Alt>c']"
gsettings set org.cinnamon.desktop.keybindings.wm toggle-maximized "['<Alt>v']"
gsettings set org.cinnamon.desktop.keybindings.wm toggle-fullscreen "['<Alt>f']"
gsettings set org.cinnamon.desktop.keybindings.wm move-to-workspace-left "['<Shift><Alt>Left']"
gsettings set org.cinnamon.desktop.keybindings.wm move-to-workspace-right "['<Shift><Alt>Right']"
gsettings set org.cinnamon.desktop.keybindings.wm switch-to-workspace-1 "['<Alt>F1']"
gsettings set org.cinnamon.desktop.keybindings.wm switch-to-workspace-2 "['<Alt>F2']"
gsettings set org.cinnamon.desktop.keybindings.wm switch-to-workspace-3 "['<Alt>F3']"
gsettings set org.cinnamon.desktop.keybindings.wm switch-to-workspace-4 "['<Alt>F4']"
gsettings set org.cinnamon.desktop.keybindings.wm switch-to-workspace-5 "['<Alt>F5']"
gsettings set org.cinnamon.desktop.keybindings.wm switch-to-workspace-down "['<Control><Alt>Down']"
gsettings set org.cinnamon.desktop.keybindings.wm switch-to-workspace-up "['<Control><Alt>Up']"
gsettings set org.cinnamon.desktop.keybindings.wm switch-to-workspace-left "['<Control><Alt>Left']"
gsettings set org.cinnamon.desktop.keybindings.wm switch-to-workspace-right "['<Control><Alt>Right']"
gsettings set org.cinnamon.desktop.keybindings.wm move-to-workspace-1 "['<Alt><Shift>F1']"
gsettings set org.cinnamon.desktop.keybindings.wm move-to-workspace-2 "['<Alt><Shift>F2']"
gsettings set org.cinnamon.desktop.keybindings.wm move-to-workspace-3 "['<Alt><Shift>F3']"
gsettings set org.cinnamon.desktop.keybindings.wm move-to-workspace-4 "['<Alt><Shift>F4']"
gsettings set org.cinnamon.desktop.keybindings.wm move-to-workspace-5 "['<Alt><Shift>F5']"
Change Desktop Colors
This is to change the desktop text color in Cinnamon,
simply edit in your gtk CSS file the nemo desktop settings.
~/.config/gtk-3.0/gtk.css:
.nemo-desktop.nemo-canvas-item {
color: #CCCCCC;
text-shadow: 1px 1px @desktop_item_text_shadow;
}
Systray Icon Size
the tray icon size is defined in: /usr/share/cinnamon/applets/[email protected]/applet.js
CMaNGOS Classic Quick Install Instructions
Server
mkdir server
cd server/
git clone git://github.com/cmangos/mangos-classic.git
cd mangos-classic/
mkdir build
cd build/
cmake .. -DBUILD_EXTRACTORS=1 -DCMAKE_INSTALL_PREFIX=../out
make
make install
cd ..
ln -sf mangosd.conf.dist out/etc/mangosd.conf
ln -sf realmd.conf.dist out/etc/realmd.conf
ln -sf playerbot.conf.dist out/etc/playerbot.conf
Client Data
cp out/bin/tools/* /tmp/WoW-1.12.1-enUS/
cd /tmp/WoW-1.12.1-enUS/
chmod +x ExtractResources.sh
./ExtractResources.sh
cd -
cp -rf /tmp/WoW-1.12.1-enUS/{maps,dbc,vmaps,mmaps,Cameras} out/bin
Database
mysql -uroot -p < sql/create/db_create_mysql.sql
mysql -uroot -p classicmangos < sql/base/mangos.sql
for sql_file in $(ls sql/base/dbc/original_data/*.sql); do mysql -uroot -p --database=classicmangos < $sql_file ; done
for sql_file in $(ls sql/base/dbc/cmangos_fixes/*.sql); do mysql -uroot -p --database=classicmangos < $sql_file ; done
mysql -uroot -p classiccharacters < sql/base/characters.sql
mysql -uroot -p classicrealmd < sql/base/realmd.sql
git clone git://github.com/cmangos/classic-db.git
cd classic-db
./InstallFullDB.sh; vim InstallFullDB.config
./InstallFullDB.sh
launch
cd out/bin
./realmd &
./mangosd
Custom Screen Resolution
A small bash function to add custom screen resolutions - that are not detected automatically - to your display. Add the following to the ~/.bashrc
:
function resolution {
if [ -z "$1" ] || [ -z "$2" ]; then
echo "USAGE:"
echo " resolution WIDTH HEIGHT [DISPLAY]"
else
settings=$(cvt $1 $2 | sed -n 's/^.*"\(.*\)"\(.*\)$/\1,\2/p')
name=$(echo "$settings" | cut -d , -f 1)
opts=$(echo "$settings" | cut -d , -f 2)
if [ -z "$3" ]; then
display=$(xrandr | sed -n "s/\(.*\) connected.*/\1/p" | head -n 1)
else
display=$3
fi
xrandr --newmode "$name" $opts
xrandr --addmode $display "$name"
fi
}
Usage: resolution WIDTH HEIGHT [DISPLAY]
Example: resolution 800 600 eDP-1
Debootstrap
Cross
Creating rootfs-tarball for foreign architecture:
debootstrap --foreign --no-check-gpg --arch=armhf testing /debian-armhf http://ftp.debian.org/debian/
Boot the target and run the second stage:
/debootstrap/debootstrap --second-stage
Native
creating rootfs-tarball for native architecture:
debootstrap --no-check-gpg testing /debian http://ftp.debian.org/debian/
Ubuntu
debootstrap trusty ./trusty http://archive.ubuntu.com/ubuntu/
apt-get source
build packages out of deb-src repositories:
apt-get source <package>
cd <package>/
vim <stuff>
apt-get -b source <package>
dpkg -i <package>
Git
add alias for unstaging
git config --global alias.unstage "reset HEAD"
default git prune
git config --global fetch.prune true
for default on pull:
git config --global pull.rebase true
show database statistics
git count-objects -v
compress database
git repack
verify files in git
git fsck --full
diff HEAD to previous HEAD
git diff HEAD HEAD^
or:
git diff HEAD HEAD~1
.gitignore
/absolute/path
relative/path
*.todo
!exception for this.todo
replace all local files by HEAD
git reset --hard HEAD
replace only one file by HEAD
git checkout HEAD foo.txt
change last commit
git commit --amend
show ALL git commits and revert to deleted commit
git reflog
git reset --hard e6b0203
create branch
git branch <NAME>
switch branch
git checkout <NAME>
create and switch
git checkout -b <NAME>
merge
git merge <branch>
conflict
git checkout --theirs <file>
git checkout --ours <file>
create git bare repository
git clone --bare <myfiles> newrepo.git
rebase
git rebase <branch>
interactive rebase
git rebase -i <branch>
apply single commit to branch
git cherry-pick <REF>
git show refs (e.g. bitbake recipes)
git show-ref
push tags
git push --tags
delete local tag / branch
git tag -d <name>
git branch -d <branch>
delete remote tag / branch
git push origin :refs/tags/v1.0
git push origin :refs/heads/testing
stash (+ untracked files)
git stash -u
git stash pop
git stash list
git stash pop stash@{1}
Gnome
Gsettings
# enable fractional scaling on wayland
gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
# enable debugger
gsettings set org.gtk.Settings.Debug enable-inspector-keybinding true
# touchpad and mouse settings
gsettings set org.gnome.desktop.peripherals.touchpad disable-while-typing false
gsettings set org.gnome.desktop.peripherals.touchpad click-method 'areas'
gsettings set org.gnome.desktop.wm.preferences resize-with-right-button true
gsettings set org.gnome.desktop.wm.preferences mouse-button-modifier '<Alt>'
# behaviour and appearance
gsettings set org.gnome.desktop.wm.preferences button-layout ':minimize,maximize,close'
gsettings set org.gtk.Settings.FileChooser sort-directories-first true
gsettings set org.gnome.nautilus.preferences recursive-search "never"
gsettings set org.gnome.shell.overrides attach-modal-dialogs false
# disable automount
gsettings set org.gnome.desktop.media-handling automount 'false'
gsettings set org.gnome.desktop.media-handling automount-open 'false'
# disable system sounds
gsettings set org.gnome.desktop.sound event-sounds false
# epiphany settings
gsettings set org.gnome.Epiphany default-search-engine 'Google'
gsettings set org.gnome.Epiphany homepage-url 'about:blank'
# terminal settings
gsettings set org.gnome.Terminal.Legacy.Settings theme-variant 'dark'
gsettings set org.gnome.Terminal.Legacy.Settings default-show-menubar false
gsettings set org.gnome.Terminal.Legacy.Settings confirm-close false
# enable night shift
gsettings set org.gnome.settings-daemon.plugins.color night-light-temperature 5500
gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true
# keybinds
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name 'Terminal'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command 'gnome-terminal'
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding '<Super>1'
gsettings set org.gnome.settings-daemon.plugins.media-keys www '<Super>2'
gsettings set org.gnome.settings-daemon.plugins.media-keys home '<Super>3'
gsettings set org.gnome.desktop.wm.keybindings close "['<Alt>c']"
gsettings set org.gnome.desktop.wm.keybindings toggle-maximized "['<Alt>v']"
gsettings set org.gnome.desktop.wm.keybindings minimize "['<Alt>s']"
gsettings set org.gnome.desktop.wm.keybindings toggle-fullscreen "['<Alt>f']"
gsettings set org.gnome.desktop.wm.keybindings always-on-top "['<Alt>t']"
for i in $(seq 1 9); do gsettings set org.gnome.shell.keybindings switch-to-application-$i "['<Super><Shift>$i']"; done
Terminal Internal Padding
add the following to ~/.config/gtk-3.0/gtk.css:
TerminalScreen {
-VteTerminal-inner-border: 10px 10px 10px 10px;
}
Terminal Force Quit
This removes the "really-quit" dialog on gnome-terminal:
gconftool-2 --set --type bool /apps/gnome-terminal/global/confirm_window_close false
Terminal: Scroll in GNU/Screen
into ~/.screenrc:
# enable scrolling
termcapinfo xterm ti@:te@
# bind page up/down
bindkey -m "^[[5;2~" stuff ^b
bindkey -m "^[[6;2~" stuff ^f
HP Envy Photo 6230
pacman -S cups hplip
systemctl enable cups.service
systemctl start cups.service
hp-setup -i HP6A0C9C
Linux Kernel
suspend to memory
echo -n mem > /sys/power/state
Enable it for users
in ./kernel/power/power.h:70 change "mode = 0644" to:
#define power_attr(_name) \
static struct kobj_attribute _name##_attr = { \
.attr = { \
.name = __stringify(_name), \
.mode = 0777, \
}, \
.show = _name##_show, \
.store = _name##_store, \
}
Build LibreELEC x86_64
This describes how to build LibreELEC on x86_64 and how to patch it, in order to build custom addons into the image.
Setup and prepare LXC Container
lxc-create -n libreelec -t ubuntu
sed -i "s/lxc.net.0.type = empty/lxc.net.0.type = none/g" /var/lib/lxc/libreelec/config
lxc-start -n libreelec
lxc-attach -n libreelec
echo 'echo "nameserver 8.8.8.8" > /etc/resolv.conf' >> /root/.bashrc && exit
lxc-attach -n libreelec
source /etc/environment
source /etc/profile
apt-get update && apt-get upgrade
apt-get install build-essential gcc make git unzip wget xz-utils python \
bc patchutils gawk gperf zip lzop xfonts-utils xfonts-utils xfonts-utils \
xsltproc default-jre libncurses5-dev libjson-perl libxml-parser-perl libz-dev
dpkg-reconfigure dash
# select "no"
Get the Sources
su -l ubuntu
source /etc/environment
git config --global user.email "build@libreelec"
git config --global user.name "Build User"
git clone https://github.com/LibreELEC/LibreELEC.tv.git
cd ~/LibreELEC.tv
Patch LibreELEC
This patch allows to build and pre-install addons during the build process:
diff --git a/config/show_config b/config/show_config
index 3de77b4..efa2854 100644
--- a/config/show_config
+++ b/config/show_config
@@ -156,6 +156,10 @@ show_config() {
config_message="$config_message\n - Default Skin:\t\t\t $SKIN_DEFAULT"
config_message="$config_message\n - Include extra fonts:\t\t\t $KODI_EXTRA_FONTS"
+ for config_addon in $ADDITIONAL_ADDONS; do
+ config_message="$config_message\n - Include Addon:\t\t\t $config_addon"
+ done
+
if [ "$(type -t show_distro_config)" = "function" ]; then
show_distro_config
fi
diff --git a/distributions/LibreELEC/options b/distributions/LibreELEC/options
index 0855ebb..4cbffe2 100644
--- a/distributions/LibreELEC/options
+++ b/distributions/LibreELEC/options
@@ -64,6 +64,11 @@
# e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2"
ADDITIONAL_DRIVERS="RTL8192CU RTL8192DU RTL8192EU RTL8188EU RTL8812AU"
+# additional addons to install:
+# Space separated list is supported,
+# e.g. ADDITIONAL_ADDONS="game.libretro game.libretro.2048 vdr-addon"
+ ADDITIONAL_ADDONS="game.libretro game.libretro.2048 vdr-addon"
+
# build and install bluetooth support (yes / no)
BLUETOOTH_SUPPORT="yes"
diff --git a/scripts/image b/scripts/image
index d21e067..3e4211a 100755
--- a/scripts/image
+++ b/scripts/image
@@ -167,6 +167,9 @@ $SCRIPTS/install network
# Multimedia support
[ ! "$MEDIACENTER" = "no" ] && $SCRIPTS/install mediacenter
+# Additional addons
+[ ! "$MEDIACENTER" = "no" ] && $SCRIPTS/include_addon $ADDITIONAL_ADDONS
+
# Sound support
[ "$ALSA_SUPPORT" = "yes" ] && $SCRIPTS/install alsa
diff --git a/scripts/include_addon b/scripts/include_addon
new file mode 100755
index 0000000..bf64425
--- /dev/null
+++ b/scripts/include_addon
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+for addon in $@; do
+ echo -e "\e[1;33m ADDON \e[0m$addon"
+ . config/options $addon
+
+ $SCRIPTS/create_addon $addon &> /dev/null
+
+ cp -rf "$ADDON_BUILD/$PKG_ADDON_ID" \
+ "$INSTALL/usr/share/kodi/addons/"
+
+ # enable non-systemd addons
+ SYSTEMD_SERVICE="$INSTALL/usr/share/kodi/addons/$PKG_ADDON_ID/system.d/$PKG_ADDON_ID.service"
+ if [ ! -f "$SYSTEMD_SERVICE" ]; then
+ ADDON_MANIFEST=$INSTALL/usr/share/kodi/system/addon-manifest.xml
+ xmlstarlet ed -L --subnode "/addons" -t elem -n "addon" -v "$PKG_ADDON_ID" $ADDON_MANIFEST
+ fi
+done
Configure LibreELEC
The main configuration can be done by editing the file: distributions/LibreELEC/options
Start the build
PROJECT=Generic ARCH=x86_64 make
Mount RAW-Image Paritions
Commands
losetup /dev/loop0 raw-image.dd
echo "0 `blockdev --getsize /dev/loop0` linear /dev/loop0 0" | dmsetup create sdx
kpartx -a /dev/mapper/sdx
mount /dev/mapper/sdx1 /mnt
mplayer
youtube
package:
youtube-dl (git), mplayer
usage:
mplayer -cache 2048 `youtube-dl "$1" -g` 2>&1
webcam
package:
mplayer (use flag: v4l2)
record:
mencoder -tv driver=v4l2:fps=25:height=600:width=800 -ovc raw -vf scale=800:600 -o $1 tv:// -nosound
view:
mplayer tv:// -tv driver=v4l2:width=800:height=600:device=/dev/video0
NAVILOCK GPS NL-454US USB
Setup the device
stty 38400 raw </dev/ttyUSB2
gpsd -D 5 -N -n /dev/ttyUSB2
# or
gpsd /dev/ttyUSB2
Show satellites
xgps
NVIDIA Optimus on FreeBSD
Install Dependencies
pkg install gcc
pkg install libjpeg-turbo
pkg install virtualgl
Build the driver
cd /usr/ports/x11/nvidia-drivers
make clean install
Setup X11
cat > /etc/X11/xorg.conf.nv << EOF
Section "ServerLayout"
Identifier "Layout0"
Option "AutoAddDevices" "false"
Option "AllowEmptyInput" "False"
InputDevice "fake" "CorePointer"
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:01:00:0"
Option "NoLogo" "true"
Option "UseEDID" "false"
Option "ConnectedMonitor" "DFP"
EndSection
Section "InputDevice"
Identifier "fake"
Driver ""
EndSection
EOF
Run Application
kldload nvidia
Xorg -config /etc/X11/xorg.conf.nv -sharevts -noreset :8
/usr/local/VirtualGL/bin/vglrun -ld /usr/local/lib/.nvidia/ -d ":8" winecfg
kldunload nvidia
Official Nvidia Optimus
this describes how to setup the original nvidia mechanisms for nvidia optimus chips on gentoo.
add in /etc/make.conf:
VIDEO_CARDS="intel nvidia modesetting"
depends:
nvidia-drivers >= 304
xrandr >= 1.4
xorg-server >= 1.13
(theese are all available in gentoo stable.)
in /etc/xorg.conf:
Section "ServerLayout"
Identifier "layout"
Screen 0 "nvidia"
Inactive "intel"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "nvidia"
Device "nvidia"
Option "UseDisplayDevice" "none"
EndSection
Section "Device"
Identifier "intel"
Driver "modesetting"
EndSection
Section "Screen"
Identifier "intel"
Device "intel"
EndSection
in ~/.xinitrc:
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
Pulse Audio Network Sink
- Hardware: OrangePi Zero
- Distribution: armbian
Software
apt-get update
apt-get install libasound2 libasound2-plugins alsa-utils alsa-oss \
pulseaudio pulseaudio-utils avahi-daemon pulseaudio-module-zeroconf
Modify /boot/armbianEnv.txt
to enable the analog output of the orange-pi:
overlays=analog-codec
In /etc/rc.local
add a few lines to setup volumes and autostart pulseaudio:
/usr/bin/pulseaudio
/usr/bin/amixer sset "Line Out" 100%
/usr/bin/amixer sset "DAC" 100%
Modify /etc/pulse/daemon.conf
to adjust pulseaudio's default settings:
daemonize = yes
allow-module-loading = yes
allow-exit = no
system-instance = yes
In /etc/pulse/system.pa
add the required modules:
load-module module-native-protocol-tcp auth-anonymous=1
load-module module-zeroconf-discover
load-module module-zeroconf-publish
Disable IPv6 in /etc/sysctl.conf
to remove duplicates in your sink-list:
net.ipv6.conf.all.disable_ipv6=1
Also modify /etc/avahi/avahi-daemon.conf
for the same reasons
use-ipv6=no
Set the desired hostname in /etc/hostname
Helpful Commands
pactl list short sinks
Simple Wireless Router
In this article I'll describe, how to manually setup a simple wireless router.
It will use eth0 as WAN and Wlan as your private network. I was using the pandaboard for this project with gentoo linux as the distribution.
Setup of the Wireless Accesspoint
We need hostapd to create a reliable WPA2 secured Accesspoint.
emerge -av hostapd
Here is my current /etc/hostapd/hostapd.conf:
interface=wlan0
driver=nl80211
ssid=YOUR_ESSID_GOES_HERE
channel=YOUR_CHANNEL
ignore_broadcast_ssid=0
country_code=DE
ieee80211d=1
hw_mode=g
ieee80211n=1
beacon_int=100
dtim_period=2
macaddr_acl=0
max_num_sta=255
rts_threshold=2347
fragm_threshold=2346
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
auth_algs=3
wmm_enabled=1
wpa=2
rsn_preauth=1
rsn_preauth_interfaces=wlan0
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_group_rekey=600
wpa_ptk_rekey=600
wpa_gmk_rekey=86400
wpa_passphrase=YOURPASSWORD
DHCP
This is a N-Wlan-Only Config. Now the WLAN Accesspoint should be set up.
Due usability, you may want a DHCP server, in that case, i've installed
dnsmasq:
emerge -av dnsmasq
This is my dnsmasq config:
# DHCP-Server aktiv für Interface
interface=wlan0
# DHCP-Server nicht aktiv für Interface
no-dhcp-interface=eth0
# IP-Adressbereich / Lease-Time
dhcp-range=interface:wlan0,10.4.4.2,10.4.4.200,infinite
# static ips
#dhcp-host=<MAC-Adresse>,<Name>,<IP-Adresse>,infinite
#dhcp-host=f1:f1:f1:f1:f1:f1,,10.4.4.2,infinite
Routing
In order to NAT the eth0 through wlan, do the following with iptables:
iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sysctl -w net.ipv4.ip_forward=1
sysctl -p
snapcast
laptop
apt-get install pulseaudio-module-raop paprefs
mpd
audio_output {
type "fifo"
name "Snapcast"
path "/tmp/snapfifo"
format "48000:16:2"
mixer_type "software"
}
systemctl restart mpd
systemctl enable mpd
shairport-sync
apt-get install shairport-sync avahi-daemon
vim /etc/shairport-sync.conf
general = {
name = "Full House";
output_backend = "pipe";
mdns_backend = "avahi";
};
metadata = {
enabled = "yes";
include_cover_art = "yes";
pipe_name = "/tmp/shairport-sync-metadata";
}
sessioncontrol = {
allow_session_interruption = "yes";
session_timeout = 20;
}
pipe = {
name = "/tmp/snapfifo";
audio_backend_buffer_desired_length = 48000;
}
systemctl restart shairport-sync
systemctl enable shairport-sync
snapclient
wget https://github.com/badaix/snapcast/releases/download/v0.12.0/snapclient_0.12.0_armhf.deb
dpkg -i snapclient_0.12.0_armhf.deb
/etc/default/snapclient:
# defaults file for snapclient
# start snapclient automatically?
START_SNAPCLIENT=true
# Allowed options:
# --help produce help message
# -v, --version show version number
# -h, --host arg server hostname or ip address
# -p, --port arg (=1704) server port
# -l, --list list pcm devices
# -s, --soundcard arg (=default) index or name of the soundcard
# -d, --daemon [=arg(=-3)] daemonize, optional process priority [-20..19]
# --user arg the user[:group] to run snapclient as when daemonized
# --latency arg (=0) latency of the soundcard
# -i, --instance arg (=1) instance id
USER_OPTS="--user eric:audio"
SNAPCLIENT_OPTS="-h server"
enable everything:
systemctl restart snapclient
systemctl enable snapclient
Install Trinity Core on Debian/Ubuntu
Other Guides
- How-toLinux
- How-toFirststepintoTrinityCore
Sources
Install dependencies
sudo apt-get install build-essential autoconf libtool gcc g++ make cmake git-core patch wget links zip unzip unrar
sudo apt-get install openssl libssl-dev libmysqlclient15-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev libncurses5-dev libace-dev
Build the Server
git clone git://github.com/TrinityCore/TrinityCore.git
mkdir TrinityCore/build
cd TrinityCore/build
cmake ../ -DSERVERS=1 -DTOOLS=1 -DPREFIX=/home/trinity/server -DSCRIPTS=1
make -j5
make install
Build Library for Map extraction
sudo apt-get install automake1.10
cd ~/TrinityCore/dep/libmpq/
sh ./autogen.sh
./configure
make
sudo make install
Map Generation
cd <your WoW client directory>
mkdir vmaps mmaps
/home/<username>/server/bin/mapextractor
/home/<username>/server/bin/vmap4extractor
/home/<username>/server/bin/vmap4assembler Buildings vmaps
cp Buildings/* ./vmaps
/home/<username>/server/bin/mmaps_generator
cp dbc maps mmaps vmaps /home/<username>/server/data
Database
mysql -u root -p < ./TrinityCore/sql/create/create_mysql.sql
mysql -u root -p auth < ./TrinityCore/sql/base/auth_database.sql
mysql -u root -p characters < ./TrinityCore/sql/base/characters_database.sql
mysql -u root -p world < ./path/to/your/tdb.sql
cd ./TrinityCore/sql/updates/world
for i in *; do mysql -u trinity --password=trinity world < $i; done
Configure
cp worldserver.conf.dist worldserver.conf
cp authserver.conf.dist authserver.conf
worldserver.conf:
LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth"
WorldDatabaseInfo = "127.0.0.1;3306;trinity;trinity;world"
CharacterDatabaseInfo = "127.0.0.1;3306;trinity;trinity;characters"
vmap.enableLOS = 1
vmap.enableHeight = 1
vmap.petLOS = 1
vmap.enableIndoorCheck = 1
mmap.enablePathFinding = 0
authserver.conf:
LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth"
Start Server
cd ./server/data
../bin/authserver
../bin/worldserver
Add Accounts
account create <user> <pass>
account set gmlevel <user> 3 -1
GM Commands
check quests:
.lookup quest <questname>
.quest complete <questid>
Ubuntu inside FreeBSD Jail
Prepare for linux compatible jails
kldload fdescfs linprocfs linsysfs tmpfs
echo 'linux_enable="YES"' >> /etc/rc.conf
echo 'compat.linux.osrelease=2.6.18' >> /etc/sysctl.conf
sysctl compat.linux.osrelease=2.6.32
echo 'jail_enable="YES"' >> /etc/rc.conf
echo 'jail_conf="/home/eric/jails/etc/jail.conf"' >> /etc/rc.conf
echo 'jail_list="ubuntu"' >> /etc/rc.conf
Setup the jail
mkdir -p /home/eric/jails/etc
cat > /home/eric/jails/etc/jail.conf << EOF
ubuntu {
path = /home/eric/jails/ubuntu;
allow.mount;
mount.devfs;
host.hostname = ubuntu;
mount.fstab="/home/eric/jails/etc/fstab.ubuntu";
ip4.addr = 127.0.0.10;
interface = lo0;
exec.start = "/etc/init.d/rc 3";
exec.stop = "/etc/init.d/rc 0";
}
EOF
cat > /home/eric/jails/etc/fstab.ubuntu << EOF
linsys /home/eric/jails/ubuntu/sys linsysfs rw 0 0
linproc /home/eric/jails/ubuntu/proc linprocfs rw 0 0
#tmpfs /home/eric/jails/ubuntu/lib/init/rw tmpfs rw,mode=777 0 0
EOF
Install Ubuntu
debootstrap --no-check-gpg --arch=i386 trusty /home/eric/jails/ubuntu http://archive.ubuntu.com/ubuntu/
umount /home/eric/jails/ubuntu/proc
umount /home/eric/jails/ubuntu/dev
umount /home/eric/jails/ubuntu/sys
umount /home/eric/jails/ubuntu/lib/init/rw
cat > /home/eric/jails/ubuntu/etc/apt/sources.list << EOF
deb http://de.archive.ubuntu.com/ubuntu trusty main universe multiverse restricted
EOF
Launch the jail
jail -f /home/eric/jails/etc/jail.conf -c ubuntu
jls
jexec 1 /bin/bash
Setup Network
kldload pf
echo 'pf_enable="YES"' >> /etc/rc.conf
echo "nat on wlan0 from 127.0.0.10 to any -> (wlan0)" >> /etc/pf.conf
URxvt
Copy & Paste
Support for Ctrl-Shift-C and Ctrl-Shift-V in (u)rxvt.
install: xsel
and download the clipboard perl script:
wget https://github.com/muennich/urxvt-perls/raw/master/clipboard -O /usr/lib/urxvt/perl/clipboard
.Xdefaults:
URxvt.perl-ext-common: default,matcher,clipboard
URxvt.keysym.Shift-Control-C: perl:clipboard:copy
URxvt.keysym.Shift-Control-V: perl:clipboard:paste
instant color-change
Using printf
to instantly swithc colors within rxvt-unicode:
change cursor color (blue):
printf '\33]12;12\007'
change background color (dark-grey):
printf '\33]11;%s\007' "#333333"
auto-change
Automatically switch colors based on the last ran process in zsh
.
.zshrc:
appearance() {
if (( EUID != 0 )); then
printf '\33]12;12\007' # blue user cursor
else
printf '\33]12;9\007' # red root cursor
fi
}
appearance
su() {
[ -n "$1" ]
printf '\33]12;8\007' # changes cursor color
/bin/su $@
appearance
}
ssh() {
[ -n "$1" ]
printf '\33]12;10\007' # changes cursor colo
/usr/bin/ssh $@
appearance
}
chroot() {
[ -n "$1" ]
printf '\33]12;13\007' # changes cursor color
/bin/chroot $@
appearance
}
Change window title
echo -en "\033]0;"$@"\a"
Install a Webserver on Linux Mint
To install a Lighttpd Webserver with PHP, MySQL(MariaDB) and PHPMyAdmin,
use one of the following instructions as root.
Install all at once
apt-get install lighttpd php5-cgi php5-mysql php5-mcrypt mariadb-server phpmyadmin
lighty-enable-mod fastcgi
lighty-enable-mod fastcgi-php
php5enmod mcrypt
service lighttpd force-reload
ln -s /usr/share/phpmyadmin/ /var/www
Install step by step
lighttpd webserver:
apt-get install lighttpd
lighttpd php & mysql bindings:
apt-get install php5-cgi php5-mcrypt php5-mysql
enable php:
lighty-enable-mod fastcgi
lighty-enable-mod fastcgi-php
php5enmod mcrypt
start/restart lighttpd:
service lighttpd force-reload
mariadb/mysql server + frontend:
apt-get install mariadb-server
apt-get install phpmyadmin
move phpmyadmin to htdocs:
ln -s /usr/share/phpmyadmin/ /var/www
Create a bootable Windows7 USB stick under Linux
depends: ntfs3g
create the partition
parted /dev/sdX
mklabel msdos
mkpart primary ntfs 1 -1
set 1 boot on
quit
mkfs.ntfs -f /dev/sdX1
compile and install the bootloader
# download http://ms-sys.sourceforge.net/
tar xvzf ms-sys-2.*.tar.gz
cd ms-sys-2.*
make
cd bin
./ms-sys -7 /dev/sdX
copy the files
mkdir -p /mnt/usb
mkdir -p /mnt/iso
mount -o loop /path/to/iso /mnt/iso
mount /dev/sdX1 /mnt/usb
cp -av /mnt/iso* /mnt/usb
finish
sync
umount /mnt/usb
umount /mnt/iso
Wireguard with Cloudflare DDNS from Android to OpenWRT
OpenWRT Setup
opkg update
opkg install luci-ssl
reboot
Cloudflare DDNS
SSH
opkg update
opkg install ddns-scripts_cloudflare.com-v4
opkg install ca-certificates
opkg install luci-app-ddns
LUCI
Go to Services -> Dynamic DNS
Name: $SUBDOMAIN
Click: Add
DDNS Service Provider: cloudflare.com-v4
Domain: $SUBDOMAIN@$DOMAIN.$TLD
Username: $CLOUDFLARE_MAIL
Password: $GLOBAL_APIKEY
Use HTTP Secure: [x]
Path to CA-Certificate: /etc/ssl/certs
Click: Advanced Settings
IP address source [IPv4]: URL
URL to detect [IPv4]: http://checkip.dyndns.com
Click: Save & Apply
Wireguard
Generate Keys
wg genkey | tee privkey | wg pubkey > pubkey
SSH
opkg install luci-app-wireguard
reboot
LUCI
Go to: Network -> Firewall -> Port Forwards
Name: WireGuard
Protocol: UDP
External Zone: WAN
External Port: 4040
Internal Zone: LAN
Internal IP Address: 10.4.4.1
Internal Port: 4040
Go to: Network -> Firewall -> Traffic Rules
Open ports on router
Name: WireGuard
Protocol: UDP
External Port: 4040
Network -> Interfaces -> Add new interface
Name: wg0
Protocol: WireGuard VPN
Private Key: $ROUTER_PRIVATE
Firewall Settings: LAN
Listen Port: 4040
IP Addresses: 10.10.0.0/16
Click: Add Peer
Public Key: $MOBILE_PUBLIC
Allowed IPs: 10.10.0.5/32
Route Allowed IPs: [x]
Persistent Keep Alive: 25
System -> Reboot
Provider Modem: O2 Connect Box
Heimnetzwerk -> Port Forwarding
Port Forwarding aktivieren: [x]
Click: Regel Hinzufügen
Computer: 192.168.1.2
1. Portbereich: 4040 - 4040
Protokoll: UDP
Click: Speichern
Android Phone
Install and open the Wireguard App. Click "(+)" and select "Create from scratch".
Name: $WIREGUARD_NAME
Private Key: $MOBILE_PRIVATE
Addresses: 10.10.0.5/32
DNS Servers: 10.4.4.1
Click: Add Peer
Public Key: $ROUTER_PUBLIC
Allowed IPs: 0.0.0.0/0,::0
Endpoint: $PUBLIC_IP/$PORT
Persistent Keep Alive: 25
A Journey into Realmzones on Vanilla World of Warcraft
A world of warcraft gameclient that connects to a valid realmserver, receives a list of all available realms, aswell as a realmzone field, containing information about the language/region of each realm. In Burning Crusade and later, this list was unified across all gameclients and became simply a numbered list of countries and languages that a realm can refer to. This list is what is documented on mangos docs, wowdev and several other sources. In addition, the source code of several implementations of realmd
, which serves as an opensource implementation of a realmserver, does also always refer to the new enumeration.
But different to what is mentioned there, the vanilla 1.12.1 gameclient handles the values quite a bit different. First of all, there is no unified list, that describes the languages. But Instead, there are 7 different client builds existing. Those are: 1-US, 2-Korea, 3-Europe, 4-Taiwan, 5-China, 99-Test and 101-QA. Each of these clients handles the value that are set as realmzone differently. The clients only know a certain amount of realmzones and every zone that is unknown, will not be displayed in the client at all.
1. US Builds (enUS)
1
: United States
5
: Oceanic
2. Korean Builds (koKR)
3. European Builds (enGB, deDE, frFR, esES)
1
: English
2
: German
3
: French
5
: Spanish
4. Taiwan Builds (zhTW)
5. Chinese Builds (zhCN)
1
: China
2
: CN3
(?)
3
: CN7
(?)
99. Test Builds (??)
1
: Test Server
5
: Oceanic
101. QA Builds (??)
So if using a realmzone 3
will result in having the realm only visible in european- and chinese builds of the client. The european versions will display French
where the chinese builds will display CN7
. Using 5
the european builds will display Spanish
and the US- and test builds will display Oceanic
in the client realm info.
As seen above, using the value 1
does always exist, and refers the most general zone/language of that region. What was also observed during the testing is, that using a 0
instead of any other number, will always refer to the 1
. An interesting part is the gap that exists in the enumeration. So for example, the 4
is missing for the EU clients and 2-4
are missing for the US builds that were probably introduced as placeholders to split the area even further. Also, the Test-Clients seem to be a modified version as the US clients, according to the supported zone infos.
The information was probed, gathered and verified using the following gameclients: enUS, ruRU, koKR, deDE, frFR, esES, zhTW and zhCN.
There was no access to an enGB
nor to the test
and QA
clients. However, a file does exist inside the enUS client (and probably others aswell) that filled the gaps in the list and gave insights about the compatible realmzones of those builds.
The file is called Cfg_Categories.dbc
and can be found inside the interface.mpq
of the client:
long,long,str,None,None,None,None,None,None,None,flags,
1,1,"United States",,,,,,,,0x3F007E,
1,2,"Korea",,,,,,,,0x3F007E,
1,3,"English",,,,,,,,0x3F007E,
2,3,"German",,,,,,,,0x3F007E,
3,3,"French",,,,,,,,0x3F007E,
1,4,"Taiwan",,,,,,,,0x3F007E,
1,5,"China",,,,,,,,0x3F007E,
1,99,"Test Server",,,,,,,,0x3F007E,
5,1,"Oceanic",,,,,,,,0x3F007E,
1,101,"QA Server",,,,,,,,0x3F007E,
5,3,"Spanish",,,,,,,,0x3F007E,
5,99,"Oceanic",,,,,,,,0x3F007E,
2,5,"CN3",,,,,,,,0x3F007E,
3,5,"CN7",,,,,,,,0x3F007E,
As a side note, the ruRU is a custom client, that didn't exist back then, but however is quite popular. This client is a modification of the enUS client, and by that falls into the category of the US-builds (so it only accepts 1
and 5
).
Here's a quick overview of what the realmzone values will display on each client:
value: 1
* deDE: Englisch
* enUS: United States
* esES: Inglés
* frFR: English
* koKR: 대한민국
* ruRU: Русский
* zhCN: 中国
* zhTW: 台灣
value: 2
* deDE: Deutsch
* esES: Alemán
* frFR: Deutsch
* zhCN: 三区
value: 3
* deDE: Französisch
* esES: Francés
* frFR: Français
* zhCN: 七区
value: 5
* deDE: Spanisch
* enUS: Oceanic
* esES: Español
* frFR: Español
* ruRU: Океания